package com.rose.mall.product.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.rose.common.utils.PageUtils;
import com.rose.mall.product.entity.AttrEntity;
import com.rose.mall.product.vo.AttrGroupRelationVo;
import com.rose.mall.product.vo.AttrRespVo;
import com.rose.mall.product.vo.AttrVo;

import java.util.List;
import java.util.Map;

/**
 * 商品属性
 *
 * @author rose
 * @email 1942951600@qq.com
 * @date 2021-06-10 15:38:01
 */
public interface AttrService extends IService<AttrEntity> {

    // 分页+模糊查询attr表 attrId作为key
    PageUtils queryPage(Map<String, Object> params, Long catelogId, String type);

    //保存attr 保存attr与group的关系 attr.getAttrGroupId()为null时不保存
    void saveAttr(AttrVo attr);

    //根据arrtId进行查询
    AttrRespVo getAttrInfo(Long attrId);

    //更新attr属性以及关联属性
    void updateAttr(AttrVo attrVo);

    //AttrGroupController
    // 根据分组id 找到和分组关联的所有属性
    List<AttrEntity> getRelationAttr(Long attrgroupId);

    //AttrGroupController
    //批量或者单个删除关联关系  并不删除原来的attr表
    void deleteRelation(AttrGroupRelationVo[] vos);

    //AttrGroupController
    //根据分组id找到所有未关联的属性；添加属性的时候使用
    PageUtils getNoRelationAttr(Map<String, Object> params, Long attrgroupId);

    // 原始方法
    PageUtils queryPage(Map<String, Object> params, Long catelogId);

    List<Long> selectSearchAttrIds(List<Long> attrIds);
}

